package com.szty.lib_pen.sendPoint

import com.blankj.utilcode.util.TimeUtils

/**
 *@author : created by SunJH
 *时间：2021/7/20 002009
 *作用：数据点透传mac地址设置帮助类
 * 在透传数据时，需要传递mac地址。但这个mac地址，在笔断连之后就会重置为空，
 * 可是笔断连之后，还会给数据点。会导致后面的数据点没有mac地址。
 * 现在，记录下历史连接记录。当笔断连后，继续给数据。就从这里取mac地址
 */
class MacSettingHelper private constructor() {
    private val penMacList = mutableMapOf<Long, String>()
    private val defMillis = TimeUtils.string2Millis("2010-01-01 00:00:00")

    companion object {
         val instance: MacSettingHelper by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
            MacSettingHelper()
        }
    }

    /**
     * 获取当前点对应的mac地址
     * @param time 腾千里sdk给的时间戳，该时间是从 2010-01-01 00:00:00 开始的，
     * 所以对比的时候要加上 2010-01-01 00:00:00的时间戳
     */
    fun getNowPointMac(time: Long): String {
        val addTimes = time+defMillis
        var mac: String = ""
        if (penMacList.isEmpty()) return mac
        val reversedKey = penMacList.keys.reversed()
        for (key in reversedKey) {
            if (key < addTimes) {
                mac = penMacList[key] ?: ""
                break
            }
        }
        return mac
    }

    fun putMac(mac: String) {
        if(penMacList.size >5){
            penMacList.remove(penMacList.keys.first())
        }
        penMacList[System.currentTimeMillis()] = mac
    }

}